package main;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Reader {
    private String text;
    private String filePath;

    public Reader(String filePath) {
        this.filePath = filePath;
    }

    public List<String> read() throws IOException {
        BufferedReader reader = new BufferedReader(new FileReader(filePath));
        String line;
        List<String> lines = new ArrayList<String>();
        while ((line = reader.readLine()) != null) {
            lines.add(line);
        }
        return lines;
    }

    public List<List<String>> parse(List<String> lines) {
        List<List<String>> articles = new ArrayList<List<String>>();
        //int k = Integer.parseInt(lines.get(0)); количество статей
        lines.remove(0);
        while (lines.size() > 0) {
            List<String> article = new ArrayList<String>();
            article.add(lines.get(0));//название
            article.add(lines.get(1));//количество синонимов
            int index = Integer.parseInt(lines.get(1));
            lines.remove(0);
            lines.remove(0);
            while(index > 0) {
                article.add(lines.get(0));
                lines.remove(0);
                index--;
            } //добавление синонимов
            index = Integer.parseInt(lines.get(0));
            article.add(lines.get(0));//количество строк
            lines.remove(0);
            while(index > 0) {
                article.add(lines.get(0));
                lines.remove(0);
                index--;
            } //добавление строк
            articles.add(article);
        }
        return articles;
    }

    public int numberOfArticles(List<String> lines) {
        return Integer.parseInt(lines.get(0));
    }

    public List<Article> getArticles(List<List<String>> set) {
        List<Article> articles = new ArrayList<Article>();
        for(List<String> article: set) {
            articles.add(new Article(article));
        }
        return articles;
    }

}
